home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / x11 / strategy / xpuzzles.3 / xpuzzles / xpuzzles-5.3.1 / xrubik / RubikP.h < prev    next >
C/C++ Source or Header  |  1996-02-05  |  4KB  |  161 lines

  1. /*
  2. # X-BASED RUBIK'S CUBE(tm)
  3. #
  4. #  RubikP.h
  5. #
  6. ###
  7. #
  8. #  Copyright (c) 1994 - 96    David Albert Bagley, bagleyd@hertz.njit.edu
  9. #
  10. #                   All Rights Reserved
  11. #
  12. #  Permission to use, copy, modify, and distribute this software and
  13. #  its documentation for any purpose and without fee is hereby granted,
  14. #  provided that the above copyright notice appear in all copies and
  15. #  that both that copyright notice and this permission notice appear in
  16. #  supporting documentation, and that the name of the author not be
  17. #  used in advertising or publicity pertaining to distribution of the
  18. #  software without specific, written prior permission.
  19. #
  20. #  This program is distributed in the hope that it will be "playable",
  21. #  but WITHOUT ANY WARRANTY; without even the implied warranty of
  22. #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  23. #
  24. */
  25.  
  26. /* Private header file for Rubik */
  27.  
  28. #ifndef _RubikP_h
  29. #define _RubikP_h
  30.  
  31. #include "Rubik.h"
  32.  
  33. /*** random number generator ***/
  34. /* insert your favorite */
  35. extern void SetRNG();
  36. extern long LongRNG();
  37. #define SRAND(X) SetRNG((long) X)
  38. #define LRAND() LongRNG()
  39.  
  40. #define NRAND(X) ((int)(LRAND()%(X)))
  41.  
  42. #define SYMBOL ':'
  43.  
  44. #define IGNORE (-1)
  45. #define TOP 0
  46. #define RIGHT 1
  47. #define BOTTOM 2
  48. #define LEFT 3
  49. #define STRT 4
  50. #define CW 5
  51. #define HALF 6
  52. #define CCW 7
  53. #define MAXORIENT 4
  54.  
  55. /* The following are in xrubik.c also */
  56. #define MAXFACES 6
  57. #define MINCUBES 1
  58.  
  59. #define DEFAULTCUBES 3
  60.  
  61. #define MIN(a,b) (((int)(a)<(int)(b))?(int)(a):(int)(b))
  62. #define MAX(a,b) (((int)(a)>(int)(b))?(int)(a):(int)(b))
  63.  
  64. typedef struct _RubikLoc
  65. {
  66.   int face, rotation;
  67. } RubikLoc;
  68.  
  69. typedef struct _RubikPart
  70. {
  71.   Pixel foreground;
  72.   Pixel borderColor;
  73.   Pixel faceColor[MAXFACES];
  74.   RubikLoc *cubeLoc[MAXFACES];
  75.   RubikLoc *faceLoc;
  76.   RubikLoc *rowLoc[MAXORIENT];
  77.   int currentFace, currentPosition, currentDirection;
  78.   Boolean started, practice, orient, vertical, mono;
  79.   int dim; /* This allows us to reuse code between 2d and 3d */
  80.   int depth;
  81.   int size, sizeSize;
  82.   Position delta;
  83.   Position orientLineLength;
  84.   XPoint puzzleSize;
  85.   XPoint puzzleOffset, letterOffset;
  86.   GC puzzleGC;
  87.   GC borderGC;
  88.   GC faceGC[MAXFACES];
  89.   GC inverseGC;
  90.   String faceName[MAXFACES];
  91.   XtCallbackList select;
  92. } RubikPart;
  93.  
  94. typedef struct _RubikRec
  95. {
  96.   CorePart core;
  97.   RubikPart rubik;
  98. } RubikRec;
  99.  
  100. /* This gets around C's inability to do inheritance */
  101. typedef struct _RubikClassPart
  102. {
  103.   int ignore;
  104. } RubikClassPart;
  105.  
  106. typedef struct _RubikClassRec
  107. {
  108.   CoreClassPart core_class;
  109.   RubikClassPart rubik_class;
  110. } RubikClassRec;
  111.  
  112. typedef struct _RowNext
  113. {
  114.   int face, direction, sideFace;
  115. } RowNext;
  116.  
  117. extern RubikClassRec rubikClassRec;
  118. extern RubikLoc *startLoc[MAXFACES];
  119.  
  120. extern void QuitRubik();
  121. extern void PracticeRubik();
  122. extern void PracticeRubikMaybe();
  123. extern void RandomizeRubik();
  124. extern void RandomizeRubikMaybe();
  125. extern void GetRubik();
  126. extern void WriteRubik();
  127. extern void UndoRubik();
  128. extern void SolveRubik();
  129. extern void IncrementRubik();
  130. extern void DecrementRubik();
  131. extern void OrientizeRubik();
  132. extern void MoveRubikCw();
  133. extern void MoveRubikCcw();
  134. extern void MoveRubikInput();
  135. extern void MoveRubik();
  136. extern void SelectRubik();
  137. extern void ReleaseRubik();
  138. extern void ResetPolyhedrons();
  139. extern void SolvePolyhedrons();
  140. extern void DrawAllPolyhedrons();
  141. extern Boolean CheckSolved();
  142. extern void InitMoves();
  143. extern void PutMove();
  144. extern void GetMove();
  145. extern int MadeMoves();
  146. extern void FlushMoves();
  147. extern int NumMoves();
  148. extern void ScanMoves();
  149. extern void PrintMoves();
  150. extern void ScanStartPosition();
  151. extern void PrintStartPosition();
  152. extern void SetStartPosition();
  153.  
  154. #ifdef DEBUG
  155. extern void PrintCube();
  156. extern void PrintFace();
  157. extern void PrintRow();
  158. #endif
  159.  
  160. #endif /* _RubikP_h */
  161.